//
//  HMSportMapViewController.m
//  HeiMaXing
//
//  Created by 黄跃奇 on 16/10/21.
//  Copyright © 2016年 itheima. All rights reserved.
//

#import "HMSportMapViewController.h"
#import <MAMapKit/MAMapKit.h>

@interface HMSportMapViewController () <MAMapViewDelegate>

@end

@implementation HMSportMapViewController {
    //起始位置
    CLLocation *_startLocation;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self setupMapView];
}

//设置地图视图
- (void)setupMapView {
    
    //1. 实例化地图视图
    MAMapView *mapView = [[MAMapView alloc] initWithFrame:self.view.bounds];
    
    //2. 添加到根视图
    [self.view addSubview:mapView];
    
    //3. 隐藏比例尺
    mapView.showsScale = NO;
    
    //4. 关闭相机旋转 - 能够降低能耗，省电
    mapView.rotateCameraEnabled = NO;
    
    //5. 显示用户的位置
    mapView.showsUserLocation = YES;
    
    //6. 跟踪用户位置 - 可以将用户定位在地图的中心，并且放大地图
    mapView.userTrackingMode = MAUserTrackingModeFollow;
    
    //7. 允许后台定位 - 设置为YES的时候必须保证 Background Modes 中的 Location updates处于选中状态，否则会抛出异常。
    mapView.allowsBackgroundLocationUpdates = YES;
    
    //8. 不允许系统暂停位置更新
    mapView.pausesLocationUpdatesAutomatically = NO;
    
    //9. 设置代理
    mapView.delegate = self;
}

#pragma mark - MAMapViewDelegate
/**
 * @brief 位置或者设备方向更新后，会调用此函数
 * @param mapView 地图View
 * @param userLocation 用户定位信息(包括位置与设备方向等数据)
 * @param updatingLocation 标示是否是location数据更新, YES:location数据更新 NO:heading数据更新
 */
- (void)mapView:(MAMapView *)mapView didUpdateUserLocation:(MAUserLocation *)userLocation updatingLocation:(BOOL)updatingLocation {
    
    //0. 判断位置数据是否变化
    if (!updatingLocation) {
        return;
    }
    
    NSLog(@"%@ %p", userLocation.location, userLocation.location);
    
    //判断起始位置是否存在
    if (_startLocation == nil) {
        _startLocation = userLocation.location;
        
        //1. 实例化大头针
        MAPointAnnotation *annotation = [MAPointAnnotation new];
        
        //2. 指定坐标位置
        annotation.coordinate = userLocation.location.coordinate;
        
        //3. 添加到地图视图
        [mapView addAnnotation:annotation];
    }
}

- (MAAnnotationView *)mapView:(MAMapView *)mapView viewForAnnotation:(id<MAAnnotation>)annotation {
    
    //0. 判断大头针类型
    if (![annotation isKindOfClass:[MAPointAnnotation class]]) {
        return nil;
    }
    
    //1. 查询可重用的大头针视图
    static NSString *annotationID = @"annotationID";
    MAAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:annotationID];
    
    //2. 如果没有查到，新建视图
    if (annotationView == nil) {
        annotationView = [[MAAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationID];
    }
    
    //3. 设置大头针视图
    UIImage *image = _sportTracking.sportImage;
    annotationView.image = image;
    annotationView.centerOffset = CGPointMake(0, -image.size.height * 0.5);
    
    
    //4. 返回自定义大头针视图
    return annotationView;
}

@end






























